前言
研究了下 Symbol 的實際用處,在此紀錄一下。
Private
Symbol 可讓物件有 Private 屬性,讓 Symbol 在遍歷的情況下不出現。
若需要取得 Symbol 可以透過 getOwnPropertySymbols 。
Unique
每一個 Symbol 都是獨立的。
像 Object 一樣,即使兩個完全相同的 Object 但由於 reference 的不同而不同,因此可以藉由此特性來避免屬性衝突的問題。
Global
可以註冊 Symbol 在整個環境裡,如此一來同一個屬性的 Symbol 只會有同一個。
Symbol.for() 會查看有沒有該屬性的 Symbol 存在,有就返回該 Symbol , 無則註冊一個。